home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Celestin Apprentice 7
/
Apprentice-Release7.iso
/
Environments
/
Open Prolog 1.0.3d33
/
Dialogs
/
Sample Dialog Code
< prev
next >
Wrap
Text File
|
1996-04-16
|
4KB
|
93 lines
simple_modal_dialog :-
purge_events(dialog),
new_dialog('Dialog Samples',128,Reference),
wait_for_event(dialog,[Reference,Item]),(Item==1;Item==2),
(Item==1 /* 1 is the OK button */ -> beep;true),
close_dialog(Reference).
smarter_modal_dialog :-
purge_events(dialog),
new_dialog('Dialog Samples','Smart Dialog',Reference),
wait_for_event(dialog,[Reference,Item]),
process_smarter_dialog_hits(Item,Reference),
close_dialog(Reference).
process_smarter_dialog_hits(1,Reference) :- %1 is the Beep button
%disable controls while beeping…
set_dialog_property([Reference,1],active(false)),
set_dialog_property([Reference,2],active(false)),
set_dialog_property([Reference,4],active(false)),
beep, %give one beep anyway
current_dialog_property([Reference,4],value(X)), %4 is the check box
(X==1->beep;true),
%re-enable the controls…
set_dialog_property([Reference,1],active(true)),
set_dialog_property([Reference,2],active(true)),
set_dialog_property([Reference,4],active(true)),
wait_for_event(dialog,[Reference,Item]),!,
process_smarter_dialog_hits(Item,Reference).
process_smarter_dialog_hits(2,Reference). %2 is the Cancel button
process_smarter_dialog_hits(4,Reference) :- %4 is the Check Box button
toggle([Reference,4]),
wait_for_event(dialog,[Reference,Item]),!,
process_smarter_dialog_hits(Item,Reference).
toggle(Ref) :-
current_dialog_property(Ref,value(V)),
toggle_value(V,I),
set_dialog_property(Ref,value(I)).
toggle_value(0,1).
toggle_value(1,0).
modeless_dialogs :-
purge_events(dialog),
new_dialog('Dialog Samples','Plus',PlusRef),
new_dialog('Dialog Samples','Minus',MinusRef),
wait_for_event(dialog,[Reference,Item]),
process_modeless_dialog_hits(Item,Reference,PlusRef,MinusRef),
close_dialog(MinusRef),
close_dialog(PlusRef).
process_modeless_dialog_hits(1,_,_,_) :- !. % Item 1 - the ‘Close’ button
process_modeless_dialog_hits(1000,_,_,_) :- !. % Close Box or Close Menu
process_modeless_dialog_hits(_,Ref,PlusRef,MinusRef) :- %all other items
current_dialog_property([Ref,2],value(N1)),
current_dialog_property([Ref,4],value(N2)),
(number(N1),number(N2)->
(Ref==PlusRef->V is N1+N2;Ref==MinusRef->V is N1-N2);
V = 'value!'),
set_dialog_property([Ref,6],value(V)),
wait_for_event(dialog,[Reference,Item]),
process_modeless_dialog_hits(Item,Reference,PlusRef,MinusRef).
modeless_beep_dialog :-
new_dialog('Dialog Samples','Modeless Beep',_).
handle_dialog_interrupt([D|Spec]) :-
current_dialog_property([D],name('Beeper')),
process_modeless_beep_dialog([D|Spec]).
process_modeless_beep_dialog([_,1]) :- beep.
process_modeless_beep_dialog([D,1000]) :- close_dialog(D).
popup_modal_dialog :-
purge_events(dialog),
new_dialog('Dialog Samples',133,Reference),
wait_for_event(dialog,[Reference,Item]),
process_popup_dialog_hits(Item,Reference),
close_dialog(Reference).
process_popup_dialog_hits(2,Reference) :-
current_dialog_property([Reference,2],value(V)),
set_dialog_property([Reference,6],value(V)),
wait_for_event(dialog,[Reference,Item]),!,
process_popup_dialog_hits(Item,Reference).
process_popup_dialog_hits(3,Reference) :-
current_dialog_property([Reference,3],value(V)),
set_dialog_property([Reference,5],value(V)),
wait_for_event(dialog,[Reference,Item]),!,
process_popup_dialog_hits(Item,Reference).
process_popup_dialog_hits(1,Reference). %1 is the OK button